AES128加密解密
void deAes(sint8 *c, sint32 clen, sint8 *key, sint8 * pPlainText) {
sint32 keylen = 16;
sint32 k, i;
sint32 cArray[4][4];
sint32 wArray[4][4];
if(clen == 0 || clen % 16 != 0) {
return;
}
if(!checkKeyLen(keylen)) {
return;
}
extendKey(key);
for(k = 0; k < clen; k = 16) {
convertToIntArray(c k, cArray);
addRoundKey(cArray, 10);
for(i = 9; i >= 1; i--) {
deSubBytes(cArray);
deShiftRows(cArray);
deMixColumns(cArray);
getArrayFrom4W(i, wArray);
deMixColumns(wArray);
addRoundTowArray(cArray, wArray);
}
deSubBytes(cArray);
deShiftRows(cArray);
addRoundKey(cArray, 0);
convertArrayToStr(cArray, pPlainText k);
}
}
评论